package cn.edu.wynu;
/*
// ATM系统技术选型

  01面向对象编程：每个账户都是一个账户对象:所以需要设计账户类 Account，
用于创建账户 对象封装账户信息。ATM 同样是一个对象，需要设 计ATM类，
代表ATM管理系统，负责对账户的处理。
  02使用集合容器：ATM管理类中需要提供一个容器用于存储系统全部账户对象的信息，
我们选ArrayList集合。
  03程序流程控制：需要结合分支、循环、跳转关键字等程序流程控制的知识，
用来控制系统的业务流程。
  04使用常见API：登录信息的内容比较，数据的分析，处理等都需要常用API来解决，
如使用String。
*/

/*
一、系统架构搭建
1、定义一个账户类Account，至少需要包含(卡号、姓名、性别、密码、余额、每次取现额度)
2、定义一个ATM类，用来代表ATM系统，负责提供所有的业务需求，比如:展示ATM的系统欢迎页、开通帐户、转账...等
3、定义一个测试类Test，负责对我们开发的ATM系统进行测试。
二、系统欢迎页设计
在ATM类中设计一个方法start()，方法里负责展示欢迎界面
三、用户开户功能
1、就是新增一个账户，也就是往系统的账户集合中添加一个账户对象。
2、账户的要求：用户信息包含:姓名、性别、密码、每次取现额度、卡号。
3、注意:卡号由系统生成，要求是8位的数字组成的(且卡号不能重复)。
四、用户登录功能
1、如果系统没有任何账户对象，则不允许登录。
2、让用户输入登录的卡号，先判断卡号是否正确，如果不正确要给出提示，
3、如果卡号正确，再让用户输入账户密码，如果密码不正确要给出提示
4、如果密码也正确，则给出登录成功的提示。
五、用户操作页设计、查询账户、退出账户功能分析
1、用户登录成功后，需要进入用户操作页。
2、查询就是直接展示当前登录成功的用户的账户信息。
3、退出账户就是回到欢迎页面。
六、用户存款功能
就是用户为自己的账户存钱，存钱后更新账户的余额即可。
七、用户取款功能
就是从自己的账户中取钱，取钱的要求:
1、需要先判断账户的余额是否大于>=100元，如果够，让用户输入取款金额
2、需要判断取款金额是否超过了当次限额，以及余额是否足够。
八、用户转账功能
把钱转给别人，转账前需要判断:
1.自己账户是否有钱，系统中是否有其他账户
2.接下来让用户输入对方卡号，判断对方账户是否存在，账户如果存在，
还需要认证对方账户的户主姓氏。
九、销户操作的基本需求
销户就是从系统中删除当前账户，销户的要求:
1.首先要询问用户是否确定要销户，如果不确定，则回到操作界面，
2.如果确定，要判断用户的账户中是否有钱，有则不允许销户，并回到操作界面
3.如果没钱，则完成销户，并回到欢迎页
十、密码修改
就是更改账户的密码，修改密码的要求:
1.需要先认证用户当前的密码
2.认证通过后，需要让用户输入2次新密码。
3.两次密码一样，则更新账户密码，并回到欢迎界面，
*/

// 测试ATM系统是否可用
public class Test {
    public static void main(String[] args) {
        // 1、创建一个ATM对象，代表ATM系统
        ATM atm = new ATM();

        // 2、调用ATM对象的start方法，启动ATM系统，展示欢迎界面
        atm.start();
    }
}
